//
//  NSString+Category.h
//  VICategory
//
//  Created by MN on 2022/7/4.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef NSString * kVISecret NS_TYPED_EXTENSIBLE_ENUM;
UIKIT_EXTERN kVISecret const _Nullable kVISecretKey;


@interface NSString (Category)


/// 计算文本的宽度
/// @param fontSize 字体的大小
- (CGFloat)vi_widthWithFontSize:(CGFloat)fontSize;

///保存本地的文件名称
- (NSString *)vi_fileName;

/// 字符串展示千分位格式
/// @param string 字符串
+ (NSString *)vi_thousandsFormat:(NSString *)string;

/// 字符串关键词富文本改变颜色
/// @param keyWords 关键字
/// @param color 颜色
- (NSMutableAttributedString *)vi_keyWords:(NSString *)keyWords withKeyWordsColor:(UIColor *)color;


/// 表示存储卡状态，取值：1、2、3，分别表示：无存储卡、存储卡异常、正常，默认无存储卡（1）
- (NSString *)getSDCardMessage;

/// 判断字符串是否为空
+ (BOOL)isEmptyStr:(NSString*)string;

/// 手机号有效性验证
+ (BOOL)isMobileNumber:(NSString *)number;

/// 是否为数字+字母+特殊字符组成
/// - Parameters:
///   - password: 密码
///   - upperAndLower: 字符是否区分大小写
+ (BOOL)isNumberLetterSpecial:(NSString *)password upperAndLower:(BOOL)upperAndLower;

/// 手机号脱敏(中间4位加*号)
+ (NSString *)phoneNumberDesensitization:(NSString*)number;

/// 格式化时间  xx分钟xx秒
+ (NSString *)scaleTime:(CGFloat)duration;

/// 是否是空串
+ (BOOL)isBlankString:(NSString *)aStr;

/// 过滤表情
+ (BOOL)containsEmoji:(NSString *)string;

/// 点击九宫格
+ (BOOL)isNineKeyBoard:(NSString *)string;

/// 中英文混合字符长度
+ (NSInteger)stringLength:(NSString *)string;


/// json字符串转字典
- (NSDictionary *)vi_jsonToDic;

//aes128 noppadding - cbc 加密
+(NSString *)vi_AES128Encrypt:(NSString *)plainText key:(NSString *)key;
//aes128 noppadding - cbc 解密
+(NSString *)vi_AES128Decrypt:(NSString *)encryptText key:(NSString *)key;

// base64加密
+ (NSString *)base64Encode:(NSString *)str;
// base64解密
+ (NSString *)base64Decode:(NSString *)str;

/**
 十进制转换十六进制
  
 @param decimal 十进制数
 @return 十六进制数
 */
+ (NSString *)vi_getHexByDecimal:(NSInteger)decimal;

- (NSString *)vi_MD5;

/// 获取随机字符串
/// @param digit 位数
+ (NSString *)getRandomStr:(NSInteger)digit;
@end

NS_ASSUME_NONNULL_END
